Загрузим файл о именах,поле и числе детей с сайта https://www.ssa.gov/oact/babynames/limits.html
Соберем все данные в одну таблицу.
In [1]:
import pandas as pd
import matplotlib.pyplot as plt
names1880 = pd.read_csv('/Users/kirill/Downloads/names/yob1880.txt',
names= ['name', 'sex', 'births'])
names1880
Out[1]:
Посчитаем количество родившихся в зависимости от пола
In [2]:
names1880.groupby('sex').sum()
Out[2]:
In [3]:
# Для начала создадим новое поле year
years=range(1880,2017)
pieces = []
columns = [ 'name', 'sex', 'births' ]
for year in years:
#меняем год в имени файла
path = '/Users/kirill/Downloads/names/yob%d.txt' %year
#читаем файл с полями
frame = pd.read_csv(path, names=columns)
#дописываем поле года
frame['year'] = year
#собираем в единый список
pieces.append(frame)
#создаем DataFrame, внимание! игнорируем исходные номера строк
names = pd.concat(pieces,ignore_index = True)
names
Out[3]:
Теперь создадим первую сводную таблицу
In [4]:
total_births=names.pivot_table(
'births',
index = 'year', # строки
columns='sex', # колонки
aggfunc=sum # сумма по births
)
total_births
Out[4]:
Построим график
In [5]:
total_births.plot(title='Общее количество роодившихся детей')
plt.show()
Давайте узнаем информацию о нашем DataFrame с именем names
In [6]:
names.info()
#names.info(memory_usage='deep')
Отберем имена только мальчиков и девочек по повторяемости
In [7]:
grouped=names.groupby(['name','sex'])['births'].sum().reset_index()
grouped_m=grouped[grouped.sex=='M']
grouped_f=grouped[grouped.sex=='F']
grouped_f
Out[7]:
In [9]:
most_popular_m=names[names.sex=='M'].drop('year',axis=1).groupby('name').sum().sort_values('births',ascending=False)
most_popular_m_10=most_popular_m[:10].reset_index()
most_popular_m_10
Out[9]:
In [10]:
james_f=names[(names.name=='James') & (names.sex=='F')]
plt.plot(james_f['year'],james_f['births'])
plt.show()
james_m=names[(names.name=='James') & (names.sex=='M')]
plt.plot(james_m['year'],james_m['births'])
plt.show()
Домашнее задание
Простое задание
Средней сложности
Повышенной сложности
Срок исполнения:
In [ ]: